package com.leetBook.Krahets.array;

/**
 * 《图解算法与数据结构》数组第 3 题：
 * 为了深入了解这些生物群体的生态特征，你们进行了大量的实地观察和数据采集。数组 arrayA 记录了各个生物群体数量数据，其中 arrayA[i] 表示第 i 个生物群体的数量。请返回一个数组 arrayB，该数组为基于数组 arrayA 中的数据计算得出的结果，其中 arrayB[i] 表示将第 i 个生物群体的数量从总体中排除后的其他数量的乘积。
 * 返回除i外的所有元素的乘积，计划先获取所有数的乘积，然后除以当前元素得到除当前元素的乘积。
 */
public class Multi {
    public int[] statisticalResult(int[] arrayA) {
        int i = 1;

        // 为0的数做特殊处理
        int zeroIndex = -1;
        // 先获取所有数的乘积
        for (int j = 0; j < arrayA.length; j++) {
            if (zeroIndex ==-1 && arrayA[j] == 0){
                i = i ;
                zeroIndex = j;
            }else {
                i = i * arrayA[j] ;
            }
        }

        // 除以当前元素得到除当前元素的乘积
        int[] ints = new int[arrayA.length];
        for (int j = 0; j < arrayA.length; j++) {
            if (zeroIndex > -1){
                if (j != zeroIndex){
                    ints[j] = 0;
                }else {
                    ints[j] = i;
                }
            }else {
                ints[j] = i / arrayA[j];
            }
        }
        return ints;
    }
}
